package com.wh.generator;


import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;

import java.io.*;
import java.nio.charset.StandardCharsets;

//动态文件生成
public class DynamicGenerator {
    /**
     * 动态生成文件
     * @param inputPath  模板文件的目录带上模板文件名
     * @param outputPath
     * @param model
     * @throws IOException
     */
    public static void doGenerate(String inputPath,String outputPath,Object model) throws IOException, TemplateException {
        //new出Configuration对象
        Configuration cfg = new Configuration(Configuration.VERSION_2_3_32);

        //指定模板文件所在的路径
        File templateDir = new File(inputPath).getParentFile();
        cfg.setDirectoryForTemplateLoading(templateDir);

        //设置模板文件使用的字符集
        cfg.setDefaultEncoding("utf-8");

        //加载模板对象
        String templateName = new File(inputPath).getName();
        Template template = cfg.getTemplate(templateName);

        //生成
        Writer out = new OutputStreamWriter(new FileOutputStream(outputPath), StandardCharsets.UTF_8);
        template.process(model, out);
        out.close();
    }
}
